import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class demo2_ {
    List<String> list=new ArrayList<>();
    StringBuilder binary=new StringBuilder();
    //不能修改题目给的参数
    public List<String> binaryTreePaths(TreeNode root) {
        dfs(root,binary);
        return list;
    }
    //加入剪枝
    public void dfs(TreeNode root,StringBuilder binary){
        if(root==null){
            return ;
        }
        //记录当前路径长度
        int len=binary.length();
        if(root.left==null&&root.right==null){
            binary.append(root.val);
            list.add(binary.toString());
        }else{
            binary.append(root.val);
            binary.append("->");
        }
        dfs(root.left,binary);
        dfs(root.right,binary);
        //一个节点前序遍历完成将binary回到需要的长度
        binary.setLength(len);
    }
}
